package org.commons;


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class HashFunction {
	

	/**
	 * La funzione hash() si occupa dell'esecuzione dell'algoritmo crittografico MD5
	 * che prende in input una stringa di lunghezza arbitraria e ne produce un'altra 
	 * in output a 128 bit utilizzata come identificativo dei nodi e delle rispettive
	 *  chiavi del nostro sitema di storage distribuito
	 *  
	 * @param obj 
	 * @return int
	 */
	public static int hash(Object obj) {
		int result = -1;
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance("MD5");
		} catch (NoSuchAlgorithmException nsae) {
			System.out.println("No Such Algorithm Exception");
			nsae.printStackTrace();
		}
		result = ByteFunctions.byteArrayToInt(md.digest(ByteFunctions.getBytes(obj)));
		return result;
	}

}
